HTML ফর্ম ব্যবহার করে ফাইল আপলোড করা

Java Technologies - জেএসপি (JSP) - JSP এ ফাইল আপলোড এবং ডাউনলোড
165

জেএসপি (JSP) ব্যবহার করে HTML ফর্মের মাধ্যমে ফাইল আপলোড করার প্রক্রিয়া একটি সাধারণ কাজ, তবে এই প্রক্রিয়াটি সফলভাবে সম্পন্ন করতে কিছু অতিরিক্ত পদক্ষেপ নিতে হয়। এখানে আমরা দেখব কীভাবে একটি HTML ফর্মের মাধ্যমে ফাইল আপলোড করা যায় এবং জেএসপি পেজে সেই ফাইলটি প্রোসেস করা যায়।

HTML ফর্ম তৈরি করা


প্রথমে একটি HTML ফর্ম তৈরি করতে হবে যেখানে ইউজার ফাইলটি নির্বাচন করবে এবং সাবমিট করবে। HTML ফর্মের মধ্যে enctype="multipart/form-data" এট্রিবিউটটি অবশ্যই উল্লেখ করতে হবে, কারণ এটি ফাইল আপলোড করার জন্য প্রয়োজনীয়।

<!DOCTYPE html>
<html>
<head>
    <title>ফাইল আপলোড</title>
</head>
<body>
    <h2>ফাইল আপলোড ফর্ম</h2>
    <form action="upload.jsp" method="post" enctype="multipart/form-data">
        <label for="file">ফাইল নির্বাচন করুন:</label>
        <input type="file" name="file" id="file" />
        <input type="submit" value="আপলোড" />
    </form>
</body>
</html>

এখানে:

  • action="upload.jsp": ফাইল আপলোডের পর এটি upload.jsp পেজে ডাটা পাঠাবে।
  • method="post": ফাইলটি সার্ভারে পাঠানোর জন্য POST মেথড ব্যবহার করা হয়েছে।
  • enctype="multipart/form-data": এই এট্রিবিউটটি ফর্মের মাধ্যমে ফাইল আপলোডের জন্য প্রয়োজনীয়।

ফাইল আপলোড প্রক্রিয়া


জেএসপি পেজে ফাইল আপলোড করার জন্য javax.servlet.http.Part API ব্যবহার করা যায়, যা Java Servlet 3.0 থেকে অন্তর্ভুক্ত। এই API ফাইল ডাটা প্রসেস করতে সাহায্য করে।

upload.jsp পেজে ফাইল আপলোড প্রক্রিয়া

<%@ page import="java.io.*, javax.servlet.*, javax.servlet.http.*, javax.servlet.annotation.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    String uploadPath = application.getRealPath("/") + "uploads";  // ফাইল সেভ করার পাথ

    // ফোল্ডারটি তৈরি করা হচ্ছে যদি এটি আগে থেকে না থাকে
    File uploadDir = new File(uploadPath);
    if (!uploadDir.exists()) {
        uploadDir.mkdir();
    }

    // ফাইলটি গ্রহণ করা
    Part filePart = request.getPart("file");
    String fileName = filePart.getSubmittedFileName();  // ফাইলের নাম

    if (fileName != null && !fileName.isEmpty()) {
        // ফাইল সেভ করা
        File file = new File(uploadPath + File.separator + fileName);
        try (InputStream fileContent = filePart.getInputStream();
             FileOutputStream fos = new FileOutputStream(file)) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fileContent.read(buffer)) != -1) {
                fos.write(buffer, 0, bytesRead);
            }
            out.println("<h3>ফাইল সফলভাবে আপলোড হয়েছে!</h3>");
            out.println("<p>ফাইলের নাম: " + fileName + "</p>");
        } catch (IOException e) {
            out.println("<h3>ফাইল আপলোডের সময় ত্রুটি ঘটেছে!</h3>");
            e.printStackTrace();
        }
    } else {
        out.println("<h3>কোনো ফাইল নির্বাচন করা হয়নি!</h3>");
    }
%>

এখানে:

  1. ফাইল পাথ নির্ধারণ: ফাইলটি uploads ফোল্ডারে সংরক্ষিত হবে। application.getRealPath("/") ব্যবহার করে আপলোড ফোল্ডারের পূর্ণ পাথ নির্ধারণ করা হয়েছে।
  2. ফাইল আপলোড: request.getPart("file") ব্যবহার করে ফাইলটি গ্রহণ করা হচ্ছে। এর মাধ্যমে আমরা ফাইলের নাম, কনটেন্ট এবং অন্যান্য মেটাডেটা পাব।
  3. ফাইল সেভ করা: ফাইলের কনটেন্ট ইনপুট স্ট্রিম থেকে পাঠিয়ে সিস্টেমে সেভ করা হচ্ছে।
  4. এবং ত্রুটির হ্যান্ডলিং: যদি ফাইল সঠিকভাবে আপলোড না হয়, তবে একটি ত্রুটি মেসেজ দেখানো হয়।

ফোল্ডার সুরক্ষা


ফাইল আপলোডের জন্য গুরুত্বপূর্ণ যে, ফাইল সেভ করার পাথের জন্য সঠিক সিকিউরিটি ম্যানেজমেন্ট নিশ্চিত করা হোক। uploads ফোল্ডারে ফাইল আপলোডের সময় ফোল্ডারটি শূন্য বা সুরক্ষিত রাখুন, যাতে অপ্রত্যাশিত ফাইল সিস্টেমে প্রবেশ করতে না পারে।

ফাইল আপলোডের সীমাবদ্ধতা


যেহেতু ফাইল আপলোড করার সময় অনেক বড় ডেটা প্রসেস করা হয়, তাই সার্ভারের web.xml ফাইলে ফাইল সাইজের সীমাবদ্ধতা নির্ধারণ করা যেতে পারে:

<servlet>
    <servlet-name>upload</servlet-name>
    <servlet-class>org.apache.catalina.servlets.FileUploadServlet</servlet-class>
    <init-param>
        <param-name>maxFileSize</param-name>
        <param-value>10485760</param-value> <!-- 10 MB -->
    </init-param>
    <init-param>
        <param-name>maxRequestSize</param-name>
        <param-value>20971520</param-value> <!-- 20 MB -->
    </init-param>
    <init-param>
        <param-name>fileSizeThreshold</param-name>
        <param-value>1024</param-value> <!-- 1 KB -->
    </init-param>
</servlet>

এতে 10MB পর্যন্ত ফাইল আপলোড করা যাবে, এবং সার্ভারের মধ্যে যে কোনও সীমাবদ্ধতা পূর্ণ হলে আপলোড বন্ধ হয়ে যাবে।


সারাংশ:

জেএসপি পেজে HTML ফর্ম ব্যবহার করে ফাইল আপলোডের প্রক্রিয়া সঠিকভাবে কাজ করার জন্য multipart/form-data এনকোডিং এবং javax.servlet.http.Part API ব্যবহার করা প্রয়োজন। এর মাধ্যমে ফাইলটি সঠিকভাবে গ্রহণ করা হয়, এবং তারপর এটি সার্ভারের নির্দিষ্ট ফোল্ডারে সেভ করা হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...